﻿using Hrm.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Hrm.Services
{
    public interface ILogService:IBaseService<Log>
    {
        /// <summary>
        /// The most common form of recorded information, generally used for ordinary output
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        bool Trace(string message);
        /// <summary>
        /// The most common form of recorded information, generally used for ordinary output
        /// </summary>
        /// <param name="ex"></param>
        /// <returns></returns>
        bool Trace(Exception ex);
        /// <summary>
        /// The most common form of recorded information, generally used for ordinary output
        /// </summary>
        /// <param name="message"></param>
        /// <param name="ex"></param>
        /// <returns></returns>
        bool Trace(string message, Exception ex);
        /// <summary>
        /// The same recording information, but appears less frequently than trace, generally used to debug the program
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        bool Debug(string message);
        /// <summary>
        /// The same recording information, but appears less frequently than trace, generally used to debug the program
        /// </summary>
        /// <param name="ex"></param>
        /// <returns></returns>
        bool Debug( Exception ex);
        /// <summary>
        /// The same recording information, but appears less frequently than trace, generally used to debug the program
        /// </summary>
        /// <param name="message"></param>
        /// <param name="ex"></param>
        /// <returns></returns>
        bool Debug(string message, Exception ex);
        /// <summary>
        /// information type information
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        bool Info(string message);
        /// <summary>
        /// information type information
        /// </summary>
        /// <param name="ex"></param>
        /// <returns></returns>
        bool Info(Exception ex);
        /// <summary>
        /// information type information
        /// </summary>
        /// <param name="message"></param>
        /// <param name="ex"></param>
        /// <returns></returns>
        bool Info(string message, Exception ex);
        /// <summary>
        /// Warning messages generally used for more important occasions
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        bool Warn(string message);
        /// <summary>
        /// Warning messages generally used for more important occasions
        /// </summary>
        /// <param name="ex"></param>
        /// <returns></returns>
        bool Warn(Exception ex);
        /// <summary>
        /// Warning messages generally used for more important occasions
        /// </summary>
        /// <param name="message"></param>
        /// <param name="ex"></param>
        /// <returns></returns>
        bool Warn(string message, Exception ex); 
        /// <summary>
        /// error message
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        bool Error(string message);
        /// <summary>
        /// error message
        /// </summary>
        /// <param name="ex"></param>
        /// <returns></returns>
        bool Error(Exception ex);
        /// <summary>
        /// error message
        /// </summary>
        /// <param name="message"></param>
        /// <param name="ex"></param>
        /// <returns></returns>
        bool Error(string message, Exception ex);
        /// <summary>
        /// Fatal exception information. In general, the program will not be able to continue execution after the fatal exception.
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        bool Fatal(string message);
        /// <summary>
        /// Fatal exception information. In general, the program will not be able to continue execution after the fatal exception.
        /// </summary>
        /// <param name="ex"></param>
        /// <returns></returns>
        bool Fatal( Exception ex);
        /// <summary>
        /// Fatal exception information. In general, the program will not be able to continue execution after the fatal exception.
        /// </summary>
        /// <param name="message"></param>
        /// <param name="ex"></param>
        /// <returns></returns>
        bool Fatal(string message, Exception ex);
        /// <summary>
        /// Through the loglevel to record log information
        /// </summary>
        /// <param name="meesage"></param>
        /// <param name="logLevel"></param>
        /// <returns></returns>
        bool Log(string meesage, int logLevel);
       /// <summary>
        /// Through the loglevel to record log information
       /// </summary>
       /// <param name="ex"></param>
       /// <param name="logLevel"></param>
       /// <returns></returns>
        bool Log(Exception ex, int logLevel);
        /// <summary>
        /// Through the loglevel to record log information
        /// </summary>
        /// <param name="meesage"></param>
        /// <param name="ex"></param>
        /// <param name="logLevel"></param>
        /// <returns></returns>
        bool Log(string meesage, Exception ex, int logLevel);
        /// <summary>
        /// record log  message
        /// </summary>
        /// <param name="lm"></param>
        /// <returns></returns>
        bool Log(Log lm);
    }
}
